package com.cskaoyan.javase.oop2._1extends._10final._1clazz;
/**
 * final修饰类,表示"最后的类,最终的类"
 * 它表示这个类无法被子类继承了,就没有子类了.通俗点说,"做了绝育手术"
 * 语法: [访问权限修饰符] final 类名{
 *     // 类体
 * }
 * 主要:
 *      1.final修饰类仅表示该类无法被继承,其他的,包括创建对象,使用对象,继承别的类等等都不受影响.
 *      2.什么样的类需要被final修饰?
 *          被final修饰 --> 意味着无法被继承,没有子类 --> 子类是扩展父类,既然不需要子类,所以该类已经很完善了,不需要子类扩展
 *          当你认为当一个类的设计已经足够完善，功能足够强大了，不需要再让子类去扩展它了。这时出于安全的考虑，就可以将一个类设置为final。这样类中成员，既不会被继承，更不会被修改。
 *
 *      正常情况下，我们很少会主动把一个类设置成final，因为没有太多的必要性。
 *      实际开发中，也要慎重将一个类设置final。
 *      常见的final修饰的类，都在JDK的源码当中。
 *      比如四类八种基本数据类型的包装类、Void、String、System、Scanner等等。
 *
 * @since 17:48
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Father f = new Father();
        f.test();
        System.out.println(f.a);
    }
}
final class Father extends Demo{
    int a = 10;
    public void test(){}
}
// Cannot inherit from final 'com.cskaoyan.javase.oop2._1extends._10final._1clazz.Father'
// class Son extends Father{}